FROM python:3.13-slim-bookworm

ENV LANG=C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1

LABEL \
    org.opencontainers.image.title="ReSpeaker 4-Mic Array Peripheral Controller" \
    org.opencontainers.image.description="LED ring and button controller for ReSpeaker 4-Mic Array HAT, communicating with Linux Voice Assistant" \
    org.opencontainers.image.source="https://github.com/OHF-Voice/linux-voice-assistant"

# ----------------------------------------------------------------------------
# System packages
#
#   build-essential  – compiles spidev / apa102-pi C extensions
#   python3-dev      – Python C headers
#   git              – some pip packages pull from git during install
# ----------------------------------------------------------------------------
RUN apt-get update && \
    apt-get install --yes --no-install-recommends \
        build-essential \
        python3-dev \
        git \
        ca-certificates && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app

# ----------------------------------------------------------------------------
# Python dependencies
#
#   websockets   – WebSocket client for LVA peripheral API
#   apa102-pi    – APA102 LED ring driver (SPI)
#   spidev       – low-level SPI access (used by apa102-pi)
#   gpiozero     – GPIO button input (Pi 3/4/5 compatible)
#   lgpio         – gpiozero backend; works on Pi 3/4/5 including Pi 5
# ----------------------------------------------------------------------------
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY respeaker_4mic_hat.py ./

ENTRYPOINT ["python3", "respeaker_4mic_hat.py"]
CMD []